---
layout: docs
page_title: proxy block in the job specification
description: |-
  The "proxy" block allows specifying options for configuring
  sidecar proxies used in Consul service mesh integration
---

# `proxy` block in the job specification

<Placement
  groups={['job', 'group', 'service', 'connect', 'sidecar_service', 'proxy']}
/>

The `proxy` block allows configuring various options for the sidecar proxy
managed by Nomad for [Consul service mesh][]. It is valid only within the context of
a `sidecar_service` block.

```hcl
job "countdash" {
  datacenters = ["dc1"]

  group "api" {
    network {
      mode = "bridge"
    }

    service {
      name = "count-api"
      port = "9001"

      connect {
        sidecar_service {
          proxy {}
        }
      }
    }

    task "web" {
      driver = "docker"

      config {
        image = "hashicorpdev/counter-api:v3"
      }
    }
  }
}
```

## Parameters

- `config` `(map: nil)` - Proxy configuration that is opaque to Nomad and passed
  directly to Consul. See [Consul service mesh documentation][envoy_dynamic_config]
  for details. Keys and values support [runtime variable interpolation][].
- `expose` <code>([expose]: nil)</code> - Used to configure expose path
  configuration for Envoy. See Consul's [Expose Paths Configuration
  Reference][expose_path_ref] for more information.
- `local_service_address` `(string: "127.0.0.1")` - The address the local
  service binds to. Useful to customize in clusters with mixed Connect and
  non-Connect services.
- `local_service_port` `(int: <varies>)` - The port the local service binds to.
  Usually the same as the parent service's port, it is useful to customize in
  clusters with mixed Connect and non-Connect services.
- `transparent_proxy` <code>([transparent_proxy][]: nil)</code> - Used to enable
  [transparent proxy][tproxy] mode, which allows the proxy to use Consul service
  intentions to automatically configure upstreams, and configures iptables rules
  to force traffic from the allocation to flow through the proxy.
- `upstreams` <code>([upstreams][]: nil)</code> - Used to configure details of
  each upstream service that this sidecar proxy communicates with.

## Examples

The following example is a proxy specification that includes upstreams
configuration.

```hcl
sidecar_service {
  proxy {
    upstreams {
      destination_name = "count-api"
      local_bind_port  = 8080
    }
  }
}
```

The following example is a proxy specification that includes transparent proxy
configuration. Note that with transparent proxy, you will not need to configure
an `upstreams` block.

```hcl
sidecar_service {
  proxy {
    transparent_proxy {
    }
  }
}
```

[Consul service mesh]: /nomad/docs/networking/consul
[job]: /nomad/docs/job-specification/job 'Nomad job Job Specification'
[group]: /nomad/docs/job-specification/group 'Nomad group Job Specification'
[task]: /nomad/docs/job-specification/task 'Nomad task Job Specification'
[runtime variable interpolation]: /nomad/docs/reference/runtime-variable-interpolation 'Nomad interpolation'
[sidecar_service]: /nomad/docs/job-specification/sidecar_service 'Nomad sidecar service Specification'
[upstreams]: /nomad/docs/job-specification/upstreams 'Nomad upstream config Specification'
[expose]: /nomad/docs/job-specification/expose 'Nomad proxy expose configuration'
[envoy_dynamic_config]: /consul/docs/connect/proxies/envoy#dynamic-configuration
[expose_path_ref]: /consul/docs/connect/proxies/proxy-config-reference#expose-paths-configuration-reference
[transparent_proxy]: /nomad/docs/job-specification/transparent_proxy
[tproxy]: /consul/docs/k8s/connect/transparent-proxy
